home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / laptop-mode-tools / modules / wireless-ipw-power < prev    next >
Text File  |  2009-10-06  |  4KB  |  139 lines

  1. #! /bin/sh
  2. # Laptop mode tools module: power saving for IPW3945, IPW2200 and IPW2100 using
  3. #                           the Intel ipw drivers.
  4. #
  5. #
  6. # This script relies upon the name of the driver.
  7. #
  8. # Original source: http://ubuntuforums.org/showthread.php?t=419772
  9.  
  10. if [ x$CONTROL_IPW_POWER = x1 ] ; then
  11.  
  12.     # Provide defaults for config file settings
  13.     [ "$IPW3945_AC_POWER" ]   || IPW3945_AC_POWER=6
  14.     [ "$IPW3945_BATT_POWER" ] || IPW3945_BATT_POWER=7
  15.     [ "$IPW2100_AC_POWER" ]   || IPW3945_AC_POWER=0
  16.     [ "$IPW2100_BATT_POWER" ] || IPW3945_BATT_POWER=5
  17.  
  18.     I3945_DRIVERNAME=ipw3945
  19.     I2200_DRIVERNAME=ipw2200
  20.     I2100_DRIVERNAME=ipw2100
  21.  
  22.     # find executables
  23.     if [ -x /sbin/iwpriv ] ; then
  24.         IWPRIV=/sbin/iwpriv
  25.     elif [ -x /usr/sbin/iwpriv ] ; then
  26.         IWPRIV=/usr/sbin/iwpriv
  27.     else
  28.         $LM_VERBOSE && echo "iwpriv is not installed" >> $OUTPUT
  29.     fi
  30.     if [ -x /sbin/iwconfig ] ; then
  31.         IWCONFIG=/sbin/iwconfig
  32.     elif [ -x /usr/sbin/iwconfig ] ; then
  33.         IWCONFIG=/usr/sbin/iwconfig
  34.     else
  35.         $LM_VERBOSE && echo "iwconfig is not installed" >> $OUTPUT
  36.     fi
  37.  
  38.     SET_I3945_AC_PARMS="set_power $IPW3945_AC_POWER"
  39.     SET_I3945_BAT_PARMS="set_power $IPW3945_BATT_POWER"
  40.  
  41.     SET_I2200_AC_PARMS="power off"
  42.     SET_I2200_BAT_PARMS="power on"
  43.  
  44.     # Note the fact that we're setting "power on" on both AC and battery.
  45.     # This is due to the fact that the second statement will have no effect
  46.     # if we turn power management off completely, and some laptops will
  47.     # reportedly get very hot if you turn off power management on the
  48.     # IPW2100.
  49.     SET_I2100_AC_PARMS_1="power on"
  50.     SET_I2100_BAT_PARMS_1="power on"
  51.     SET_I2100_AC_PARMS_2="set_power $IPW2100_AC_POWER"
  52.     SET_I2100_BAT_PARMS_2="set_power $IPW2100_BATT_POWER"
  53.  
  54.  
  55.     #
  56.     # Find all the wireless devices using the supplied driver names.
  57.     # Place the interface names on the list WIFI_IFNAMES.
  58.     #
  59.     findWifiIfsByDriver() {
  60.         local DEVICE;
  61.         local LINK_TARGET;
  62.         WIFI_IFNAMES=""
  63.  
  64.         for DEVICE in /sys/class/net/*; do
  65.             if [ -d $DEVICE/wireless -a -h $DEVICE/device/driver ]; then
  66.                 # See if the driver for $DEVICE matches the supplied one by checking the link to
  67.                 # the driver.
  68.                 LINK_TARGET=`readlink $DEVICE/device/driver`
  69.                 LINK_TARGET=${LINK_TARGET##*/}
  70.  
  71.                 if [ "$LINK_TARGET" = "$1" ]; then
  72.  
  73.                     # add the interface name to the list
  74.                         WIFI_IFNAMES="$WIFI_IFNAMES ${DEVICE##*/}"
  75.                 fi
  76.             fi
  77.         done
  78.     }
  79.  
  80.  
  81.     #
  82.     # Set all the adaptors using the supplied driver into the supplied
  83.     # power saving mode
  84.     #
  85.     # $1 - driver name
  86.     # $2 - power command
  87.     # $3 - power command arguments
  88.     #
  89.     setWifiPwrSave () {
  90.         local DEVICE;
  91.         findWifiIfsByDriver $1;
  92.  
  93.         for DEVICE in $WIFI_IFNAMES; do
  94.             $LM_VERBOSE && echo "Wireless power saving: $2 $DEVICE $3" >> $OUTPUT
  95.             $2 $DEVICE $3
  96.         done
  97.     }
  98.  
  99.     intel3945_BatPwrSave () {
  100.         setWifiPwrSave "$I3945_DRIVERNAME" "$IWPRIV" "$SET_I3945_BAT_PARMS"
  101.     }
  102.  
  103.     intel3945_AcPwrSave () {
  104.         setWifiPwrSave "$I3945_DRIVERNAME" "$IWPRIV" "$SET_I3945_AC_PARMS"
  105.     }
  106.  
  107.     intel2200_BatPwrSave () {
  108.         setWifiPwrSave "$I2200_DRIVERNAME" "$IWCONFIG" "$SET_I2200_BAT_PARMS"
  109.     }
  110.  
  111.     intel2200_AcPwrSave () {
  112.         setWifiPwrSave "$I2200_DRIVERNAME" "$IWCONFIG" "$SET_I2200_AC_PARMS"
  113.     }
  114.  
  115.     intel2100_BatPwrSave () {
  116.         setWifiPwrSave "$I2100_DRIVERNAME" "$IWCONFIG" "$SET_I2100_BAT_PARMS_1"
  117.         setWifiPwrSave "$I2100_DRIVERNAME" "$IWPRIV" "$SET_I2100_BAT_PARMS_2"
  118.     }
  119.  
  120.     intel2100_AcPwrSave () {
  121.         setWifiPwrSave "$I2100_DRIVERNAME" "$IWCONFIG" "$SET_I2100_AC_PARMS_1"
  122.         setWifiPwrSave "$I2100_DRIVERNAME" "$IWPRIV" "$SET_I2100_BAT_PARMS_2"
  123.     }
  124.  
  125.  
  126.     if [ $ON_AC -eq 1 ] ; then
  127.         [ -d /sys/module/$I3945_DRIVERNAME ] && intel3945_AcPwrSave
  128.         [ -d /sys/module/$I2200_DRIVERNAME ] && intel2200_AcPwrSave
  129.         [ -d /sys/module/$I2100_DRIVERNAME ] && intel2100_AcPwrSave
  130.     else
  131.         [ -d /sys/module/$I3945_DRIVERNAME ] && intel3945_BatPwrSave
  132.         [ -d /sys/module/$I2200_DRIVERNAME ] && intel2200_BatPwrSave
  133.         [ -d /sys/module/$I2100_DRIVERNAME ] && intel2100_BatPwrSave
  134.     fi
  135. else
  136.     $LM_VERBOSE && echo "Intel IPW Wireless power setting is disabled." >> $OUTPUT
  137. fi
  138.